# -*- coding: utf-8 -*-
from seekfree import PWM
from seekfree import GPIO

PWM.help()                              # 模块使用说明

pwm = PWM(10000)                        # 初始化 PWM 频率 10K
pwm.channel_init(pwm.A0, 0)             # 初始化对应 A0 引脚的 PWM 通道 占空比 0
pwm.channel_init(pwm.A1, 10000)         # 初始化对应 A1 引脚的 PWM 通道 占空比最大值
pwm.channel_init(pwm.A2, 0)             # 初始化对应 A2 引脚的 PWM 通道 占空比 0
pwm.channel_init(pwm.A3, 10000)         # 初始化对应 A3 引脚的 PWM 通道 占空比最大值
pwm.info()                              # 模块参数输出

pinpg3 = GPIO(0x63, 0, 1)               # G3 输入 上拉
num = 0
dir = 1
duty = 0

while 1:
    num += 1
    if num >= 0x1fff:
        num = 0
        if dir:
            duty += 100
            if duty == 10000:
                dir = 0
        else:
            duty -= 100
            if duty == 0:
                dir = 1
        pwm.duty(pwm.A0, duty)          # 更新输出占空比
        pwm.duty(pwm.A1, 10000-duty)    # 更新输出占空比
        pwm.duty(pwm.A2, duty)          # 更新输出占空比
        pwm.duty(pwm.A3, 10000-duty)    # 更新输出占空比
        print(pwm.pulse_width(pwm.A0))  # 输出对应引脚的 PWM 脉宽值 us
        print(pwm.pulse_width(pwm.A1))  # 输出对应引脚的 PWM 脉宽值 us
        print(pwm.pulse_width(pwm.A2))  # 输出对应引脚的 PWM 脉宽值 us
        print(pwm.pulse_width(pwm.A3))  # 输出对应引脚的 PWM 脉宽值 us

    if pinpg3.value() == 0:             # 按下按键 G3
        print("Exti PWM test program.\n")
        break                           # 退出测试程序 （如果接下来要运行其他代码请先退出本测试程序）
